Application server

An application server is a software framework that provides an environment in which applications can run, no matter what the applications are or what they do.[1] It is dedicated to the efficient execution of procedures (programs, routines, scripts) for supporting the construction of applications.

The term was originally used when discussing early client–server systems to differentiate servers that run SQL services[2] and middleware servers from file servers.

Later, the term took on the meaning of Web applications, but has since evolved further into that of a comprehensive service layer. An application server acts as a set of components accessible to the software developer through an API defined by the platform itself. For Web applications, these components are usually performed in the same machine where the Web server is running, and their main job is to support the construction of dynamic pages. However, present-day application servers target much more than just Web page generation: they implement services like clustering, fail-over, and load-balancing, so developers can focus on implementing the business logic.[3]

Normally the term refers to Java application servers. When this is the case, the application server behaves like an extended virtual machine for the running applications, transparently handling connections to the database on one side, and connections to the Web client on the other.

Other uses of the term may refer to the services that a server makes available or the computer hardware on which the services run.

Contents

Java application servers

Java Platform, Enterprise Edition or Java EE (was J2EE) defines the core set of API and features of Java Application Servers.

The Web modules include servlets, and JavaServer Pages. Enterprise JavaBeans are used to manage transactions. According the the J2EE blueprints the business logic of an application resides in Enterprise JavaBeans - a modular server component providing many features, including declarative transaction management, and improving application scalability.

Many Java Application Servers leave off many Java EE features like EJB and JMS including Tomcat from Apache, and Jetty from Eclipse Foundation. Their focus is more on Java Servlets and JavaServer Pages.

There are many open source Java application servers that support Java EE including JOnAS from Object Web, JBoss AS from JBoss (division of Red Hat), Geronimo from Apache, TomEE from Apache, Resin Java Application Server from Caucho Technology, Blazix from Desiderata Software, Enhydra Server from Enhydra.org, and GlassFish from Oracle.

Commercial, non open-source, Java application servers have been dominated by WebLogic Application Server by Oracle and WebSphere Application Server from IBM. These application servers are often considered enterprise application servers and are often used by banks, insurance companies, and similar companies.

A Java Server Page (JSP) (a servlet from Java — the Java equivalent of a CGI script) executes in a Web container. JSPs provide a way to create HTML pages by embedding references to the server logic within the page. HTML coders and Java programmers can work side by side by referencing each other's code from within their own.

The application servers mentioned above mainly serve Web applications, and services via RMI, EJB, JMS and SOAP. Some application servers target networks other than web-based ones: Session Initiation Protocol servers, for instance, target telephony networks.

Web Server is a subset but the Application server is a superset and hence encompasses the past server information that is been stored in database.

.NET Framework

Microsoft

Microsoft positions their middle-tier applications and services infrastructure in the Windows Server operating system and the .NET Framework technologies in the role of an application server.

Third-party

PHP application servers

Are used for running and managing PHP applications.

Zend Server, built by Zend Technologies, provides application server functionality for PHP-based applications

Other platforms

Open-source application servers also come from other vendors. Examples include:

Non-Java offerings have no formal interoperability specifications on par with the Java Specification Request. As a result, interoperability between non-Java products is poor compared to that of Java EE based products. To address these shortcomings, specifications for enterprise application integration and service-oriented architecture were designed to connect the many different products. These specifications include Business Application Programming Interface, Web Services Interoperability, and Java EE Connector Architecture.

Advantages of application servers

Data and code integrity 
By centralizing business logic on an individual server or on a small number of server machines, updates and upgrades to the application for all users can be guaranteed. There is no risk of old versions of the application accessing or manipulating data in an older, incompatible manner.
Centralized configuration
Changes to the application configuration, such as a move of database server, or system settings, can take place centrally.
Security
A central point through which service-providers can manage access to data and portions of the application itself counts as a security benefit, devolving responsibility for authentication away from the potentially insecure client layer without exposing the database layer.
Performance
By limiting the network traffic to performance-tier traffic the client–server model improves the performance of large applications in heavy usage environments.
Total Cost of Ownership (TCO)
In combination, the benefits above may result in cost savings to an organization developing enterprise applications. In practice, however, the technical challenges of writing software that conforms to that paradigm, combined with the need for software distribution to distribute client code, somewhat negate these benefits.
Transaction Support
A transaction represents a unit of activity in which many updates to resources (on the same or distributed data sources) can be made atomic (as an indivisible unit of work). End-users can benefit from a system-wide standard behaviour, from reduced time to develop, and from reduced costs. As the server does a lot of the tedious code-generation, developers can focus on business logic.

See also

Footnotes

  1. ^ "What is an App Server?". http://www.theserverside.com/. http://www.theserverside.com/news/1363671/What-is-an-App-Server. Retrieved 2010-02-28. "Chances are good that the average reader thinks a Java application server basically provides an implementation of the servlet specification, probably an implementation of JavaServer Pages, and perhaps some more services like database connection pooling. An application server is more and less, at the same time: an application server provides an environment where applications can run, no matter what the applications are or what they do." 
  2. ^ "Analysis in the Application Server Environment". Microsoft Corporation. 1 June 1997. http://technet.microsoft.com/en-us/library/cc750283.aspx#XSLTsection130121120120. 
  3. ^ Stefano Ceri, Piero Fraternali, Aldo Bongio, Marco Brambilla, Sara Comai, Maristella Matella. "Designing Data Intensive Web Applications, 2Q03".